package com.vipboot.framework.mybatisplus.core.page;

import com.baomidou.mybatisplus.core.metadata.IPage;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serial;
import java.io.Serializable;
import java.util.List;

/**
 * 表格分页数据对象
 */
@Data
@NoArgsConstructor
public class PageData<T> implements Serializable {
    @Serial
    private static final long serialVersionUID = 1L;

    /**
     * 总记录数
     */
    private long total;

    /**
     * 列表数据
     */
    private List<T> rows;

    /**
     * 分页
     *
     * @param list  列表数据
     * @param total 总记录数
     */
    public PageData(List<T> list, long total) {
        this.rows = list;
        this.total = total;
    }

    /**
     * 根据分页对象构建表格分页数据对象
     */
    public static <T> PageData<T> build(IPage<T> page) {
        PageData<T> pageData = new PageData<>();
        pageData.setRows(page.getRecords());
        pageData.setTotal(page.getTotal());
        return pageData;
    }

    /**
     * 根据数据列表构建表格分页数据对象
     */
    public static <T> PageData<T> build(List<T> list) {
        PageData<T> pageData = new PageData<>();
        pageData.setRows(list);
        pageData.setTotal(list.size());
        return pageData;
    }

}
